
import { IProcessDataOptions, processData } from "./funs/processData";
import { setDomain } from "./funs/setDomain";
import { showError } from "./funs/showError";


/** 请求服务器 */
export const domain = 'https://biz-gateway.dev.kingxunlian.com';

/** 请求配置 */
export interface IOptions extends IProcessDataOptions {

    /** 
     * 请求服务器 https://xxx.xxx.xxx 
     * */
    domain?: string

    /** 
     * 是否显示错误提示
     */
    isShowError?: boolean
}

/**
 * 请求服务器
 * @param input 请求地址
 * @param init 请求配置
 * @param options 请求配置
 */
export async function server(input: RequestInfo | URL, init?: RequestInit | undefined, options?: IOptions) {
    try {
        /** 请求对象 */
        const request = setDomain(input, domain, options);

        /** 返回数据 */
        const data = await fetch(request, init);

        return await processData(data, options);
    } catch (error) {
        throw showError(error);
    }
}

/** 请求错误 */
export class ServerError extends Error {
    constructor(message: string) {
        super();
        this.message = message;
    }
}


